package br.com.saeng2D.formulario.caixa;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.JPanel;

import br.com.saeng2D.objeto.AbstratoObjeto;
import br.com.saeng2D.objeto.animado.AbstratoAnimado;

public class ContainerAnimado extends JPanel {
	private static final long serialVersionUID = 1L;
	private GrupoContainerAnimado grupoContainerAnimado;
	private AbstratoAnimado abstratoAnimado;
	private boolean selecionado;
	
	public ContainerAnimado(AbstratoAnimado abstratoAnimado) {
		this.abstratoAnimado = abstratoAnimado;
		setBackground(Color.WHITE);
		registrarEvento();
	}
	
	private void registrarEvento() {
		addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				selecionar();
			}
		});
	}
	
	public void selecionar() {
		if(grupoContainerAnimado != null) {
			grupoContainerAnimado.setSelecionado(ContainerAnimado.this);
		}
		setSelecionado(!selecionado);
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		Graphics2D g2 = (Graphics2D) g;
		g2.setStroke(AbstratoObjeto.LARGURA_LINHA_ABSTRATO_OBJETO);
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		abstratoAnimado.desenhar(g2);
	}

	public boolean isSelecionado() {
		return selecionado;
	}

	public void setSelecionado(boolean selecionado) {
		this.selecionado = selecionado;
		if(this.selecionado) {
			setBorder(BorderFactory.createLineBorder(Color.BLUE));
		} else {
			setBorder(BorderFactory.createEmptyBorder());
		}
	}
	
	public AbstratoAnimado getAbstratoAnimado() {
		return abstratoAnimado;
	}

	public GrupoContainerAnimado getGrupoContainerAnimado() {
		return grupoContainerAnimado;
	}

	public void setGrupoContainerAnimado(GrupoContainerAnimado grupoContainerAnimado) {
		this.grupoContainerAnimado = grupoContainerAnimado;
	}
}